package com.thd.framework.basic.utils;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.ReadSheet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

public class SimpleExcelUtils {
    private static Logger logger = LoggerFactory.getLogger(SimpleExcelUtils.class);

    public static void dealExcel(InputStream inputStream, Integer sheetNum,Integer maxHeaderLineNum, Class clazz,ReadListener listener){


        // 一个文件一个reader
        try (ExcelReader excelReader = EasyExcel.read(inputStream, clazz, listener).build()) {
            // 构建一个sheet 这里可以指定名字或者no
            ReadSheet readSheet = EasyExcel.readSheet(sheetNum).build();
            // 读取一个sheet
            excelReader.read(readSheet);
        }
    }

    public static List<Map<Integer,String>> getData(InputStream inputStream,Integer sheetNum, Integer maxHeaderLineNum){
        // 这里 也可以不指定class，返回一个list，然后读取第一个sheet 同步读取会自动finish
        List<Map<Integer, String>> listMap = EasyExcel.read(inputStream).sheet(sheetNum).headRowNumber(maxHeaderLineNum).doReadSync();
        for (Map<Integer, String> data : listMap) {
            // 返回每条数据的键值对 表示所在的列 和所在列的值
            logger.info("读取到数据:{}", data);
        }
        return listMap;
    }

    public static List<Map<Integer,String>> getData(String filePath,Integer sheetNum ,Integer maxHeaderLineNum){
        String fileName = filePath;
        // 这里 也可以不指定class，返回一个list，然后读取第一个sheet 同步读取会自动finish
        List<Map<Integer, String>> listMap = EasyExcel.read(fileName).sheet(sheetNum).headRowNumber(maxHeaderLineNum).doReadSync();
        for (Map<Integer, String> data : listMap) {
            // 返回每条数据的键值对 表示所在的列 和所在列的值
            logger.info("读取到数据:{}", data);
        }
        return listMap;
    }

//    public static void main(String[] args) throws Exception{
//        List<Map<Integer,String>> d = SimpleExcelUtils.getData("D:\\OneDrive - Lenovo\\DOC\\GDM\\2022-08-23SCIP\\scip_format_annex_picklist_202202_en.xlsx",0,1);
//        System.out.println(d);
//
//
//        List<Map<Integer,String>> d1 = SimpleExcelUtils.getData(new FileInputStream("D:\\OneDrive - Lenovo\\DOC\\GDM\\2022-08-23SCIP\\scip_format_annex_picklist_202202_en.xlsx"),2,0);
//        System.out.println(d1);
//    }
}
